import time
# 当前时间，时间元组localtime()
now = time.localtime()
print("当前时间元组：",now)
# 时间元组含义：
# tm_year: 年
# tm_mon: 月，1到12
# tm_mday: 日，1到31
# tm_hour: 小时，0到23
# tm_min：分，0到59
# tm_sec: 秒，0到61（61是闰秒）
# tm_wday: 一周中索引([0,6], 周一的索引:0)
# tm_yday: 一年中索引([1,366])
# tm_isdst: 1 if summer time is in effect, 0 if not, and -1 if unknown。-1，是决定是否为夏令时

nowDate = time.strftime("%Y-%m-%d: %H:%M:%S", now)
print("当前时间格式转换：",nowDate)
# %Y	完整的年份
# %y	去掉世纪的年份
# %m	月份（01 - 12）
# %d	一个月中的第几天（01 - 31）
# %H	一天中的第几个小时（24小时制，00 - 23）
# %M	分钟数（00 - 59）
# %S	秒（01 - 61）
# %w	一个星期中的第几天（0 - 6，0是星期天）
# %Z	时区的名字（如果不存在为空字符）

# gmtime和localtime的用法是一样的
# gmtime获取的时间是零度经线的时间，是英国的格林尼治天文台所在的经度，也叫本初子午线，0时区
print("当前时间元组：",time.gmtime())

# 当前时间，时间戳time()，time()得到的时间单位是秒，这是从1970年1月1日0点0分0秒开始计时，一直到现在经历的秒数
print("当前时间的时间戳：",time.time())

# mktime可以把得到的元组转化成时间戳
print("当前时间元组转化为时间戳：",time.mktime(time.localtime()))
print("当前时间元组转化为时间戳：",time.mktime(time.gmtime()))

# sleep线程推迟指定的时间运行，单位秒
time.sleep(0.1)

# asctime可以把时间元组转化成一个固定格式的字符串，默认参数就是time.localtime拿到的元组
print("时间元组转化成一个固定格式的字符串：",time.asctime())
print(time.asctime(time.localtime()))
print(time.asctime(time.gmtime()))

# ctime和asctime拿到的结果一样，但是参数是时间戳，默认就是time.time()
print("时间元组转化成一个固定格式的字符串：",time.ctime())
print(time.ctime(time.time()))
print(time.ctime(1304579615))

# strftime可以按一定的规则，将时间元组转化成格式化字符串形式，如果没有时间元组参数，就默认为localtime
print(time.strftime('%Y-%m-%d %H:%M:%S %Z'))
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.strftime('%Y-%m-%d %X'))

# strptime和strftime作用是相反的，注意格式要和输入的格式化字符串一致，不然就会报错了，format默认为："%a %b %d %H:%M:%S %Y"。
print("字符串转化成时间元组：",time.strptime('2000-01-01 14:57:45','%Y-%m-%d %X'))

# =================================================
now_timestamp = time.time()  # 获取当前时间的时间戳
print("当前时间的时间戳：",now_timestamp) # <type 'float'>, 1525687472.870682
# 时间戳先转成时间元组，strftime在转成指定格式
now_tuple = time.localtime(now_timestamp)
time.strftime("%Y/%m/%d %H:%M:%S", now_tuple)
timestamp = 1608852741  # 指定时间戳
a = time.localtime(timestamp)  # 获得时间元组形式数据
print("时间元组数据：",a)
time.strftime("%Y/%m/%d %H:%M:%S", a)  # 格式化
print(time.ctime(1608852741))

dates = "2020-12-26 11:45:34"
# 1、时间字符串转成时间数组形式
date_array = time.strptime(dates, "%Y-%m-%d %H:%M:%S")
# 2、查看时间数组数据
print("时间数组：", date_array)
# 3、mktime时间数组转成时间戳
time.mktime(date_array)

old = "2020-12-12 12:28:45"
# 1、转换成时间数组
time_array = time.strptime(old, "%Y-%m-%d %H:%M:%S")
# 2、转换成新的时间格式(20201212-20:28:54)
new = time.strftime("%Y%m%d-%H:%M:%S",time_array)  # 指定显示格式
print("原格式时间：",old)
print("新格式时间：",new)
# 1、时间戳
old_time = time.time()
# 2、时间元组
time_array = time.localtime(old_time)
# 3、指定格式输出
new_time = time.strftime("%Y/%m/%d %H:%M:%S", time_array)
print("指定格式时间：",new_time)

